package com.avoid.easymqtt.remoting.common;

/**
 * 对于服务器，支持三种SSL模式：禁用、允许和强制。
 * <ol>
 * <li><strong>disabled:</strong> SSL不受支持；任何传入的SSL握手都将被拒绝，导致连接关闭。</li>
 * <li><strong>permissive:</strong> SSL是可选的，也就是说，在这种模式下，服务器可以为有或没有SSL的客户端连接提供服务；</li>
 * <li><strong>enforcing:</strong> 需要SSL，即非SSL连接将被拒绝。</li>
 * </ol>
 *
 * @author avoid@fiture.com
 * @date 2022/5/5
 * @motto Life is so short,do something to make yourself happy,such as coding
 */
public enum TlsMode {

    /**
     * 不支持SSL
     */
    DISABLED("disabled"),

    /**
     * SSL可选
     */
    PERMISSIVE("permissive"),

    /**
     * 仅支持SSL
     */
    ENFORCING("enforcing");

    private final String name;

    TlsMode(String name) {
        this.name = name;
    }

    public static TlsMode parse(String mode) {
        for (TlsMode tlsMode : TlsMode.values()) {
            if (tlsMode.name.equals(mode)) {
                return tlsMode;
            }
        }

        return PERMISSIVE;
    }

    public String getName() {
        return name;
    }

}
